package cz.pecinovsky.česky.oopnz.ufo;
/*******************************************************************************
 *<pre>
 * Předchozí:   Není - toto_je_nově_definovaná_třída
 *              Ttt v projektu Ppp
 * Následující: Prozatím není
 *
 * Projekt  Ppp
 *   + Přidáno
 *   - Odebráno
 *   ~ Změněno
 *</pre>
 */


////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ Konec ignorovaného počátečního textu +++++

import java.awt.geom.Rectangle2D;


/*******************************************************************************
 * Instance třídy představují startovací a přistávací rampy.
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class Rampa extends Dispečer.Tvar
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================

    /** Odkaz na okno, ve kterém se všechno kreslí. */
    protected static final Vesmír V = Vesmír.getVesmír();
    
    
    
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
    
    Rectangle2D.Double čtverec;
    Číslo číslo;
    
    
    
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ METODY TŘÍDY ======================================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří na zadaných souřadnicích rampu se zadaným číslem.
     * 
     * @param číslo  Číslo konstruované rampy
     * @param x      Vodorovná souřadnice konstruované rampy
     * @param y      Svislá souřadnice konstruované rampy
     */
    public Rampa( int číslo, double x, double y )
    {
        super( x, y, 2*Dispečer.VELIKOST, Dispečer.barvaRampy );
        this.číslo = new Číslo( číslo, x, y );
        int r2 = rozměr >> 1;   //Poloviční rozměr
        čtverec = new Rectangle2D.Double(
            (int)xPos-r2, (int)yPos-r2, rozměr, rozměr );
        nakresli();
    }

    

//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== PŘEKRYTÉ METODY IMPLEMENTOVANÝCH ROZHRANÍ =================================

    /***********************************************************************
     * Nakreslí svoji instanci.
     * Při kreslení považuje za svoji pozici střed čtverce.
     */
    @Override
    public void nakresli()
    {
        V.setBarvaPopředí( barva );
        V.zaplň( čtverec );
        číslo.nakresli();
    }
    
    
    
//== PŘEKRYTÉ ABSTRAKTNÍ METODY RODIČOVSKÉ TŘÍDY ===============================
//== PŘEKRYTÉ KONKRÉTNÍ METODY RODIČOVSKÉ TŘÍDY ================================
//== NOVĚ ZAVEDENÉ METODY INSTANCÍ =============================================

    /***********************************************************************
     * Zaparkuje zadané UFO nad svým středem.
     *
     * @param ufo  UFO, které je třeba zaparkovat.
     */
    public void zaparkuj( IUFO ufo )
    {
        ufo.vypniMotory();
        ufo.setRychlost( xPos - ufo.getX(),  yPos - ufo.getY() );
        ufo.popojeď( 1 );
        ufo.setRychlost( 0, 0 );
    }
    
    
    
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY A METODA MAIN =======================================================
}
